package edu.ensabap.matricula.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import edu.ensabap.matricula.bean.EdgarDTO;
import edu.ensabap.matricula.bean.JoaquinDTO;
import edu.ensabap.matricula.constants.MySQlQuery;
import edu.ensabap.matricula.constants.PgQuerys;
import edu.ensabap.matricula.constants.RowMapperConstants;

@Repository
public class JoaquinDAO {
	
	private SimpleJdbcTemplate simpleJdbcTemplate;
    private JdbcTemplate jdbcTemplate;
	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
	
	@Autowired
	public void init(DataSource dataSource) {
		this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
		this.jdbcTemplate=new JdbcTemplate(dataSource);
		this.namedParameterJdbcTemplate=new NamedParameterJdbcTemplate(dataSource);
	}
	
	
	
//	crear metodo que liste joaquin
	@SuppressWarnings("unchecked")
	public List<JoaquinDTO> listar(JoaquinDTO joaquin){
		System.out.println("ENTRO A DAO -->> LISTAR");
		String sql = "SELECT id,codigo,nombre FROM joaquin where 1 = 1 ";
		if(joaquin.getNombre()!=null){
			sql+=" and nombre like '%"+joaquin.getNombre()+"%' ";
		}
		if(joaquin.getCodigo()!=null){
			sql+=" and codigo like '%"+joaquin.getCodigo()+"%' ";
		}
		

		sql+=" ORDER BY  id ";
		return this.jdbcTemplate.query(sql, new RowMapperConstants.JoaquinMApper());
		
	}
	
	
//	INSERTAR JOAQUIN

//	funcion que agrega
	public int insertar(JoaquinDTO joaquin){
			
		String  sql = MySQlQuery.INSERTAR_JOAQUIN;
		
		Map<String, Object> parametros= new HashMap<String, Object>();
		parametros.put("codigo",joaquin.getCodigo());
		parametros.put("nombre",joaquin.getNombre());
		
		
		return this.simpleJdbcTemplate.update(sql, parametros);
		
	}
	
	public int eliminar(JoaquinDTO joaquin){
		System.out.println("EL ID ES :"+joaquin.getId());
		String sql = MySQlQuery.ELIMINAR_JOAQUIN;
		Map<String, Object> parametros= new HashMap<String, Object>();
		parametros.put("id",joaquin.getId());
		
		return this.simpleJdbcTemplate.update(sql, parametros);
	}
	
//	funccion obtener apartir de id
	@SuppressWarnings("unchecked")
	public List<JoaquinDTO> obtenerXID(JoaquinDTO joaquin){
		System.out.println("entro al dao obtener por parametro");
		String sql = MySQlQuery.OBTENER_POR_ID_JOAQUIN;
		if(joaquin.getId()!=0){
			sql+= " and id= "+ joaquin.getId()+" ";
		}		
		return this.jdbcTemplate.query(sql, new RowMapperConstants.JoaquinMApper());	
	}
	
	
	public int modificar(JoaquinDTO joaquin){
		
		System.out.println("el nombre DAO  :"+joaquin.getId());
		System.out.println("el nombre DAO  :"+joaquin.getNombre());
		System.out.println("el nombre DAO  :"+joaquin.getCodigo());
		
		
		Map<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("codigo",joaquin.getCodigo());
		parametros.put("nombre",joaquin.getNombre());
		parametros.put("id",joaquin.getId());
		String sql = MySQlQuery.MODIFICAR_JOAQUIN;
		
		return this.simpleJdbcTemplate.update(sql,parametros);
	}

}
